#pragma once

#include <string>
#include "glm/glm.hpp"
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

namespace Fysics {

	class Shader
	{
	public:
		Shader(const char* vertexPath, const char* fragmentPath);
		Shader(const std::string& vertexSrc, const std::string& fragmentSrc);
		~Shader();

		void Bind() const;
		void Unbind()const;

		void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
		void UploadUniformVec3(const std::string& name, const glm::vec3& vec);
	private:
		uint32_t m_RendererID;
		std::string vertexString;
		std::string fragmentString;
		const char* vertexSource;
		const char* fragmentSource;
	
	};
}